import tools from "./libs/utils/tools.js";
import throttle from "./libs/utils/throttle.js";
import debounce from "./libs/utils/debounce.js";
import validates from "./libs/utils/validate.js";
import systemInfo from "./libs/utils/systemInfo.js";
import storage from "./libs/utils/storage.js";
import router from "./libs/utils/router.js";
import calendar from "./libs/utils/calendar.js";
import mixin from "./libs/mixin/mixin.js";
import styleConfig from "./libs/utils/config.js";
import audioController from "./libs/utils/audioController.js";

// 创建配置对象
let sc = {
  ...tools, // 工具函数
  ...validates, // 验证函数
  throttle, // 节流函数
  debounce, // 防抖函数
  calendar, // 日历函数
  sys: systemInfo(), // 系统信息
  storage, // 存储函数
  audioController, // 音频控制器
  router, // 路由函数
  push: router.push.bind(router), // 路由跳转函数
  back: router.back.bind(router), // 路由返回函数
  config: {}, // 配置
};

// 挂载到全局
uni.$sc = sc;

const install = (Vue, config = {}) => {
  try {
    // 合并配置
    sc.config = sc.deepMerge(styleConfig, config);

    // 性能优化：延迟mixin注册
    // #ifndef APP-NVUE
    Vue.mixin(mixin);
    // #endif

    // Vue2 兼容性处理
    // #ifdef VUE2
    // #ifndef APP-NVUE
    Vue.prototype.$sc = sc;
    // #endif
    // #endif

    // Vue3 兼容性处理
    // #ifdef VUE3
    Vue.config.globalProperties.$sc = sc;
    Vue.config.globalProperties.$px2rpx = sc.px2rpx;
    // #endif

    // 成功安装提示
    console.log(
      `%c[SC-UI] 组件库已安装，版本: ${sc.version}`,
      "background: #3C9CFF; color: white; padding: 5px 10px; line-height: 20px; font-size: 12rpx; border-radius: 5px;"
    );
  } catch (error) {
    console.error("[SC-UI] 安装失败:", error);
    throw error;
  }
};

export default {
  install,
  version: sc.version,
};
